#============================================
# #知识点 
#default 默认值
# 添加数据，可以指定字段
# 如create table t1(id int,name varchar(13))
# insert into t1(name.id) values ("fbh",1)

#enum 枚举
#set 集合
#create table t2(id int,name varchar(13),gender enum("mela","femela","others") default "mela",weight float(200,30));
# insert into t2(name,id,weight,gender) values("yzw",2,120.2,"femela");
# insert into t2(name,id,weight) values("fbh",1,120.2);
#============================================
#unique 唯一
#单列唯一
#create table t3(id int unique,name varchar(16));
#insert into t3(name,id) values("fbh",1);
#insert into t3(name,id) values("yzw",1); #会报错，因为id时唯一的不能都为1
#insert into t3(name,id) values("yzw",2);

#联合唯一
#ip和prot一起
#单个可以重复，但是加载在一起是不能重复
# create table t4(id int,name varchar(16),ip varchar(15),port int(4),unique(ip,port));
#unique(ip,port)可以放在任何位置，最好在约束条件之后
# insert into t4(id,name,ip,port) values(1,"fbh","127.1.1.0",8000);
# insert into t4(id,name,ip,port) values(1,"fbh","127.1.2.0",8000);
# insert into t4(id,name,ip,port) values(1,"fbh","127.1.1.0",8100);
# insert into t4(id,name,ip,port) values(1,"fbh","127.1.1.0",8000);  #报错，联合重复
#===========================================
# primary key 主键
#从约束角度来看，它 = not null+unique
#即非空且唯一
#create table t5(id int primary key);
#insert into t5 values(null);  报错
#insert into t5 values(1),(1); 报错

#除了有约束效果之外，他还是innodb存储引擎组织数据的依据
#innodb存储引擎在创建表时必须要有primary key
#它类似于书的目录，能够帮助提示查询效率并且也是建表的依据

#一张表只有一个主键，如果没有设置，它就会从上往下找，把第一个非空且唯一的字段设置为主键
#create table t6(id int,name varchar(4),addr char(10) not null unique,ip char(20) not null unique);
#这里就会把addr设置为主键

#如果字段中没有这样的约束，它就自动生成一个隐藏的主键，那就意味着无法索引和提升查询效率。

#一张表中应该有一个主键，并且通常以id这一类意思为主键
#create table t7(id int primary key,name varchar(10));
#联合主键（多个字段联合作为一个主键，本质还是一个主键）
#create table t8(id int,name char(10),primary key(id,name));

# 总结:意味着，每次创建表时在id叫上主键约束
#===========================================
# auto_increment 自增
#当编号特别多时，人为维护太麻烦
#create table t9(id int primary key auto_increment,name char(16));
#insert into t9(name) values("fbh"),("qwq"),("awa"); 这里id可以不用输入(必须用指定添加)

#注意：
# 这里用这种方法后，使用delete from 删除内容，它的id序号不会重置，要想重置，就得用truncate t9;
# 总结：在创建表时最好在id那加上 primary key unique
#===========================================